﻿CREATE PROCEDURE [Auth].[UpdateAccount]
	@AccountID INT,
	@FirstName NVARCHAR(30),
  @LastName NVARCHAR(30),
  @Password NVARCHAR(255) = NULL,
  @DisplayName NVARCHAR(255),
  @AuthenticationSignInName NVARCHAR(255),
  @AuthenticationTypeID SMALLINT
WITH EXECUTE AS OWNER
AS
SET NOCOUNT ON;

BEGIN TRY
  BEGIN TRANSACTION
  
  UPDATE Auth.Accounts
     SET FirstName = @FirstName,
         LastName = @LastName,
         DisplayName = @DisplayName,
         Password = @Password,
         AuthenticationSignInName = @AuthenticationSignInName,
         AuthenticationTypeID = @AuthenticationTypeID
   WHERE AccountID = @AccountID;
  
  COMMIT TRANSACTION
END TRY
BEGIN CATCH
  IF @@TRANCOUNT > 0
    ROLLBACK TRANSACTION;
  
  DECLARE @ERROR_SEVERITY AS INT,
          @ERROR_STATE AS INT,
          @ERROR_NUMBER AS INT,
          @ERROR_LINE AS INT,
          @ERROR_MESSAGE AS NVARCHAR(4000);

  SELECT @ERROR_SEVERITY = ERROR_SEVERITY(),
         @ERROR_STATE = ERROR_STATE(),
         @ERROR_NUMBER = ERROR_NUMBER(),
         @ERROR_LINE = ERROR_LINE(),
         @ERROR_MESSAGE = ERROR_MESSAGE();

  RAISERROR('Msg %d, Line %d, :%s',
            @ERROR_SEVERITY,
            @ERROR_STATE,
            @ERROR_NUMBER,
            @ERROR_LINE,
            @ERROR_MESSAGE);

END CATCH